Перем ЮнитТест;

#Область ОбработчикиСобытийМодуля

Функция ПолучитьСписокТестов(МенеджерТестирования) Экспорт
	
	ЮнитТест = МенеджерТестирования;

	СписокТестов = Новый Массив;
	СписокТестов.Добавить("ТестКонструктор");
	СписокТестов.Добавить("TestConstructor");
	СписокТестов.Добавить("ТестУстановитьПространствоИмен");
	СписокТестов.Добавить("ТестФормаАтрибутовПоУмолчанию");
	СписокТестов.Добавить("ТестФормаЭлементовПоУмолчанию");
	СписокТестов.Добавить("ТестОписаниеЭлемента");
	СписокТестов.Добавить("ТестОпределениеПростогоТипа");
	СписокТестов.Добавить("ТестОпределениеСоставногоТипа");
	СписокТестов.Добавить("ТестОбъявлениеАтрибута");
	СписокТестов.Добавить("ТестОпределениеГруппыАтрибутов");
	СписокТестов.Добавить("ТестОбъявлениеНотации");	
	СписокТестов.Добавить("ТестОпределениеОграниченияИдентичности");
	СписокТестов.Добавить("ТестОпределениеГруппыМодели");
			
	Возврат СписокТестов;

КонецФункции

#КонецОбласти

#Область ОбработчикиТестирования

Процедура ТестКонструктор() Экспорт

	СхемаXML = Новый СхемаXML;
	
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML), Тип("СхемаXML"));
	
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.Аннотация);
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.Компоненты), Тип("ФиксированныйСписокКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(СхемаXML.КорневойКонтейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(СхемаXML.Схема, СхемаXML);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ТипКомпоненты, ТипКомпонентыXS.Схема);
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ЭлементDOM);

	ЮнитТест.ПроверитьРавенство(СхемаXML.URIПространстваИменСхемыДляСхемыXML, "http://www.w3.org/2001/XMLSchema");
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.Аннотации);
	ЮнитТест.ПроверитьЗаполненность(СхемаXML.БлокировкаПоУмолчанию);
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.Версия);
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ДокументDOM);
	ЮнитТест.ПроверитьЗаполненность(СхемаXML.ЗавершенностьПоУмолчанию);

	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОбъявленияАтрибутов), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОбъявленияНотаций), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОбъявленияЭлементов), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОпределенияГруппАтрибутов), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОпределенияГруппМоделей), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОпределенияОграниченийИдентичности), Тип("КоллекцияИменованныхКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.ОпределенияТипов), Тип("КоллекцияИменованныхКомпонентXS"));
	
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ПрефиксСхемыДляСхемыXML);
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ПространствоИмен);
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.Содержимое), Тип("СписокКомпонентXS"));
	ЮнитТест.ПроверитьРавенство(ТипЗнч(СхемаXML.Директивы), Тип("СписокКомпонентXS"));
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.СхемаДляСхемыXML);

	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ФормаАтрибутовПоУмолчанию);
	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.ФормаЭлементовПоУмолчанию);

	ЮнитТест.ПроверитьНеЗаполненность(СхемаXML.Язык);

КонецПроцедуры

Procedure TestConstructor() Export

	Schema = New XMLSchema;

	ЮнитТест.ПроверитьРавенство(TypeOf(Schema), Type("XMLSchema"));
	ЮнитТест.ПроверитьРавенство(Schema.ComponentType, XSComponentType.Schema);

EndProcedure

Процедура ТестУстановитьПространствоИмен() Экспорт

	СхемаXML = Новый СхемаXML;
	СхемаXML.ПространствоИмен = "https://oscript.io";

	ЮнитТест.ПроверитьРавенство(СхемаXML.ПространствоИмен, "https://oscript.io");

КонецПроцедуры

Процедура ТестФормаАтрибутовПоУмолчанию() Экспорт

	СхемаXML = Новый СхемаXML;

	СхемаXML.ФормаАтрибутовПоУмолчанию = ФормаПредставленияXS.Неквалифицированная;

	ЮнитТест.ПроверитьРавенство(СхемаXML.ФормаАтрибутовПоУмолчанию, ФормаПредставленияXS.Неквалифицированная);

КонецПроцедуры

Процедура ТестФормаЭлементовПоУмолчанию() Экспорт

	СхемаXML = Новый СхемаXML;

	СхемаXML.ФормаЭлементовПоУмолчанию = ФормаПредставленияXS.Квалифицированная;

	Перем1 = СхемаXML.ФормаЭлементовПоУмолчанию;
	Перем2 = ФормаПредставленияXS.Квалифицированная;

	ЮнитТест.ПроверитьРавенство(СхемаXML.ФормаЭлементовПоУмолчанию, ФормаПредставленияXS.Квалифицированная);

КонецПроцедуры

Процедура ТестОписаниеЭлемента() Экспорт

	СхемаXML = Новый СхемаXML;

	Элемент = Новый ОбъявлениеЭлементаXS;
	Элемент.Имя = "test";
	СхемаXML.Содержимое.Добавить(Элемент);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Элемент));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияЭлементов.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Элемент.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Элемент.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияЭлементов.Количество(), 0);

КонецПроцедуры

Процедура ТестОпределениеПростогоТипа() Экспорт

	СхемаXML = Новый СхемаXML;

	Определение = Новый ОпределениеПростогоТипаXS;
	Определение.Имя = "test";
	СхемаXML.Содержимое.Добавить(Определение);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Определение));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияТипов.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Определение.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Определение.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияТипов.Количество(), 0);

КонецПроцедуры

Процедура ТестОпределениеСоставногоТипа() Экспорт

	СхемаXML = Новый СхемаXML;

	Определение = Новый ОпределениеСоставногоТипаXS;
	Определение.Имя = "test";
	СхемаXML.Содержимое.Добавить(Определение);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Определение));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияТипов.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Определение.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Определение.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияТипов.Количество(), 0);

КонецПроцедуры

Процедура ТестОбъявлениеАтрибута() Экспорт

	СхемаXML = Новый СхемаXML;

	Атрибут = Новый ОбъявлениеАтрибутаXS;
	Атрибут.Имя = "test";
	СхемаXML.Содержимое.Добавить(Атрибут);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Атрибут));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияАтрибутов.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Атрибут.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Атрибут.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияАтрибутов.Количество(), 0);

КонецПроцедуры

Процедура ТестОпределениеГруппыАтрибутов() Экспорт

	СхемаXML = Новый СхемаXML;

	ГруппаАтрибутов = Новый ОпределениеГруппыАтрибутовXS ;
	ГруппаАтрибутов.Имя = "test";
	СхемаXML.Содержимое.Добавить(ГруппаАтрибутов);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(ГруппаАтрибутов));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияГруппАтрибутов.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(ГруппаАтрибутов.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(ГруппаАтрибутов.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияГруппАтрибутов.Количество(), 0);

КонецПроцедуры

Процедура ТестОбъявлениеНотации() Экспорт

	СхемаXML = Новый СхемаXML;

	Нотация = Новый ОбъявлениеНотацииXS;
	Нотация.Имя = "test";
	СхемаXML.Содержимое.Добавить(Нотация);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Нотация));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияНотаций.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Нотация.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Нотация.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОбъявленияНотаций.Количество(), 0);

КонецПроцедуры

Процедура ТестОпределениеОграниченияИдентичности() Экспорт

	СхемаXML = Новый СхемаXML;

	Ограничение = Новый ОпределениеОграниченияИдентичностиXS;
	Ограничение.Имя = "test";
	СхемаXML.Содержимое.Добавить(Ограничение);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(Ограничение));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияОграниченийИдентичности.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(Ограничение.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(Ограничение.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияОграниченийИдентичности.Количество(), 0);

КонецПроцедуры

Процедура ТестОпределениеГруппыМодели() Экспорт

	СхемаXML = Новый СхемаXML;

	ГруппаМодели = Новый ОпределениеГруппыМоделиXS;
	ГруппаМодели.Имя = "test";
	СхемаXML.Содержимое.Добавить(ГруппаМодели);

	ЮнитТест.ПроверитьИстину(СхемаXML.Содержит(ГруппаМодели));
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияГруппМоделей.Количество(), 1);
	ЮнитТест.ПроверитьРавенство(ГруппаМодели.Контейнер, СхемаXML);
	ЮнитТест.ПроверитьРавенство(ГруппаМодели.КорневойКонтейнер, СхемаXML);

	СхемаXML.Содержимое.Очистить();
	
	ЮнитТест.ПроверитьРавенство(СхемаXML.Содержимое.Количество(), 0);
	ЮнитТест.ПроверитьРавенство(СхемаXML.ОпределенияГруппМоделей.Количество(), 0);

КонецПроцедуры

#КонецОбласти